import { createRouter, createWebHistory } from 'vue-router'
import { ElMessage } from 'element-plus'

import routes from './routes'

import { useBaseStore } from '../stores/useBaseStore'
let baseStore = null

const router = createRouter({
  history: createWebHistory(import.meta.env.BASE_URL),
  routes,
})

router.beforeEach((to, from, next) => {
  // 初始化仓库
  if (baseStore == null) {
    baseStore = useBaseStore()
  }
  console.log(to.path)
  // 判断是否为公开路由
  if (to.meta.isPublic) {
    next()
    return
  }
  // 判断非公开页面访问是否已经登录
  if (baseStore.token == '') {
    next('/login')
    ElMessage.error({
      message: '请先登录',
    })
    return
  }
  // 判断登录用户是否具有权限访问需要跳转的页面
  // 方式1：判断拦截：都需要获取当前用户存在那些权限
  // 判断访问的路径是否需要授权判断
  if (to.path.split('/').length < 4) {
    // 当长度小于4表示不足三层导航，无需判断
    next()
    return
  }
  let isAuth = false // 假设没有权限
  for (let e of baseStore.menus) {
    if (e.right_path == to.path) {
      // 当menus中存在将要访问的路由地址，表示存在授权
      isAuth = true
      break
    }
  }
  if (isAuth) {
    // 存在授权
    next()
  } else {
    // 不存在授权
    next('/home/auth')
  }
  // 方式2：动态路由生成：都需要获取当前用户存在那些权限
})

export default router
